package com.yycx.common.mybatis.interceptor;

import com.yycx.common.base.entity.EntityMap;
import com.yycx.common.mybatis.model.PageParams;
import com.yycx.common.mybatis.model.ResultBody;
import com.yycx.common.mybatis.query.CriteriaQuery;

import java.util.List;

/**
 * 扩展分页处理器接口拦截器
 *
 * @author zyf
 */
public interface PageInterceptor<T> {

    /**
     * 条件验证
     *
     * @param cq
     * @param params
     * @return
     */
    default ResultBody validate(CriteriaQuery<T> cq, EntityMap params) {
        return ResultBody.ok();
    }


    /**
     * 条件预处理
     *
     * @param cq
     * @param pageParams
     * @param params
     */
    default void prepare(CriteriaQuery<T> cq, PageParams pageParams, EntityMap params) {

    }


    /**
     * 扩展返回结果
     *
     * @param cq
     * @param result
     * @param extra
     */
    default void complete(CriteriaQuery<T> cq, List<EntityMap> result, EntityMap extra) {

    }


}
